Asynchronous Programming ASP.Net এ ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে এবং অ্যাপ্লিকেশনের কর্মক্ষমতা বাড়াতে গুরুত্বপূর্ণ একটি বৈশিষ্ট্য। Async এবং Await হল দুটি প্রধান কীওয়ার্ড যা C# ভাষায় অ্যাসিঙ্ক্রোনাস প্রোগ্রামিংয়ের জন্য ব্যবহৃত হয়। অ্যাসিঙ্ক্রোনাস প্রোগ্রামিংয়ের মাধ্যমে, আপনার অ্যাপ্লিকেশন একাধিক কাজ একসাথে সম্পাদন করতে সক্ষম হয়, যার ফলে ওয়েব অ্যাপ্লিকেশন দ্রুত রেসপন্স দেয় এবং সার্ভারের উপর কম চাপ পড়ে।
Asynchronous programming এমন একটি প্রোগ্রামিং প্যাটার্ন যেখানে কাজগুলো একসাথে, একে অপরের অপেক্ষা না করে চলতে থাকে। এর মানে হলো, আপনি একটি কাজ শুরু করতে পারেন এবং সেই কাজটি সম্পন্ন না হওয়া পর্যন্ত অন্য কাজ করতে পারেন। এটি বিশেষভাবে I/O (Input/Output) ভিত্তিক অপারেশন যেমন ডেটাবেস কুয়েরি, ফাইল রিড/রাইট এবং নেটওয়ার্ক রিকোয়েস্টের জন্য উপকারী।
Async এবং Await দুটি মূল কিওয়ার্ড যা C#-এ অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং বাস্তবায়নে ব্যবহৃত হয়:
async
কিওয়ার্ড ব্যবহার করা হয়। এটি সেই মেথডের ভিতরে await কিওয়ার্ড ব্যবহার করতে সক্ষম করে।await
কিওয়ার্ড একটি অ্যাসিঙ্ক্রোনাস অপারেশনের সাথে যুক্ত করা হয়, যা চলমান অপারেশনটির সমাপ্তি না হওয়া পর্যন্ত পরবর্তী কোড এক্সিকিউট হতে দেয় না।ASP.Net Core অ্যাপ্লিকেশনগুলিতে Async এবং Await ব্যবহারের মাধ্যমে আপনি ডাটাবেস কুয়েরি, ফাইল সিস্টেম অপারেশন, HTTP রিকোয়েস্ট, এবং আরও অনেক I/O ভিত্তিক কাজ সহজেই পরিচালনা করতে পারেন।
একটি অ্যাসিঙ্ক্রোনাস মেথড তৈরি করতে, আপনি async
কিওয়ার্ড ব্যবহার করবেন এবং অপারেশনটি সম্পন্ন হওয়া পর্যন্ত Task বা Task টাইপ রিটার্ন করবেন।
public async Task<IActionResult> GetProducts()
{
var products = await _dbContext.Products.ToListAsync();
return View(products);
}
এখানে, ToListAsync()
একটি অ্যাসিঙ্ক্রোনাস মেথড যা ডাটাবেস থেকে প্রোডাক্টের তালিকা আনার জন্য ব্যবহৃত হয়েছে। await
এর মাধ্যমে এটি অপেক্ষা করে যে ডাটাবেস অপারেশনটি সম্পন্ন হবে।
ASP.Net Core এ, আপনি HTTP রিকোয়েস্টের জন্যও অ্যাসিঙ্ক্রোনাস মেথড ব্যবহার করতে পারেন। উদাহরণস্বরূপ, একটি অন্য API থেকে ডেটা আনতে।
public async Task<IActionResult> GetWeather()
{
HttpResponseMessage response = await _httpClient.GetAsync("https://api.weather.com/current");
string weatherData = await response.Content.ReadAsStringAsync();
return Content(weatherData);
}
এখানে, GetAsync
এবং ReadAsStringAsync
মেথড দুটি অ্যাসিঙ্ক্রোনাস। await
ব্যবহার করে তাদের এক্সিকিউশন সম্পন্ন হওয়া পর্যন্ত অপেক্ষা করা হয়।
Blazor কম্পোনেন্টে অ্যাসিঙ্ক্রোনাস কোড লেখা অত্যন্ত সাধারণ। আপনি OnInitializedAsync()
বা OnAfterRenderAsync()
এর মতো বিল্ট-ইন অ্যাসিঙ্ক্রোনাস লাইফসাইকেল মেথড ব্যবহার করতে পারেন।
@page "/weather"
<h3>Weather Info</h3>
@if (weatherData != null)
{
<p>@weatherData</p>
}
@code {
private string weatherData;
protected override async Task OnInitializedAsync()
{
weatherData = await GetWeatherData();
}
private async Task<string> GetWeatherData()
{
HttpResponseMessage response = await Http.GetAsync("https://api.weather.com/current");
return await response.Content.ReadAsStringAsync();
}
}
এখানে, OnInitializedAsync()
একটি অ্যাসিঙ্ক্রোনাস মেথড যা কম্পোনেন্ট ইনিশিয়ালাইজ হওয়ার সময় GetWeatherData() মেথডকে কল করে।
Asynchronous programming ক্লায়েন্ট এবং সার্ভারের মধ্যে দীর্ঘ সময় নেবার মতো কাজ (যেমন ডাটাবেস কুয়েরি বা HTTP রিকোয়েস্ট) সম্পাদন করতে সক্ষম করে। এটি অন্যান্য কাজগুলোকে প্রভাবিত না করে চলতে থাকতে সাহায্য করে।
Aysnc/Await ব্যবহার করলে অ্যাপ্লিকেশনের কর্মক্ষমতা বৃদ্ধি পায় কারণ এটি I/O ব্লকিং অপারেশনের সময় CPU-কে অন্য কাজ করতে দেয়।
একটি অ্যাসিঙ্ক্রোনাস রিকোয়েস্টের মাধ্যমে আপনি ইউজার ইন্টারফেসের সাড়া দ্রুত পাবেন, কারণ অ্যাসিঙ্ক্রোনাস অপারেশন UI থ্রেড ব্লক করে না।
অ্যাসিঙ্ক্রোনাস রিকোয়েস্ট সার্ভারের মাল্টিপল থ্রেড ব্যবস্থাপনা উন্নত করতে সাহায্য করে এবং একই সময়ে অনেক রিকোয়েস্ট প্রোসেস করা সম্ভব হয়, যা সার্ভারের চাপ কমাতে সাহায্য করে।
ConfigureAwait(false)
ব্যবহার করলে ডেডলক ঘটতে পারে।ASP.Net Core এ Async/Await ব্যবহার করে আপনি অ্যাপ্লিকেশনের কর্মক্ষমতা বাড়াতে এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে পারেন। ডাটাবেস অপারেশন, HTTP রিকোয়েস্ট এবং অন্যান্য I/O ভিত্তিক কাজ অ্যাসিঙ্ক্রোনাসভাবে সম্পাদিত হলে অ্যাপ্লিকেশন দ্রুত রেসপন্স দেয় এবং সার্ভারের উপর কম চাপ পড়ে।
Read more